
class P10948_39643 {

	static final int MAX = 1000030;
	
	private static boolean[] primes = new boolean[MAX];
	private static int[] primos = new int[MAX];
	
	public static void main(String[] args) {
		createPrimes();
		
		while (true) {
			int n = Integer.parseInt(readLn());
			
			if (n == 0) break;
			
			System.out.println(n + ":");
			process(n);
		}
		
	}
	
	private static void process(int n) {
				
		int index = 0;
		
		for (;;) {
			
			int primo = primos[index];
			
			if (primo > (n / 2) + 1) break;
			
			if (primes[n - primo]) {
				System.out.println(primo + "+" + (n - primo));
				return;
			}
			
			index++;
			
		}
		
		System.out.println("NO WAY!");
		
	}

	static String readLn() {
		String newLine = System.getProperty("line.separator");
		StringBuffer buffer = new StringBuffer();
		int car = -1;
		try {
			car = System.in.read();
			while ((car > 0) && (car != newLine.charAt(0))) {
				buffer.append((char) car);
				car = System.in.read();
			}
			if (car == newLine.charAt(0))
				System.in.skip(newLine.length() - 1);
		} catch (java.io.IOException e) {
			return (null);
		}
		if ((car < 0) && (buffer.length() == 0))
			return (null);
		return (buffer.toString()).trim();
	}

	static void createPrimes() {
		   int i, j;

		   for(i = 0; i < MAX; i++) {
		      primes[i] = false;
		   }

		   primes[2] = true;
		   primes[3] = true;
		   primos[0] = 2;
		   primos[1] = 3;
		   
		   int counter = 2;

		   for(i = 5; i < MAX; i+=2) {
		       for(j = 3; j*j <=i ; j+=2)
		           if(i % j == 0) break;
		       if(i % j != 0 )  {
		    	   primes[i] = true;
		    	   primos[counter] = i;
		    	   counter++;
		       }
		   }
		   
			   
		}
	
}
